/**
 * Copyright (c) 2015 www.smarthome.com All rights reserved. <br />
 * 本软件源代码版权归xxxx公司,未经许可不得任意复制与传播.<br />
 *
 */
package com.smarthome.domain.enums;

/**
 * 
 * 异常类型
 * 
 * @author KongXiangyu
 * 
 * @since 1.0
 */
public enum ResponseCode {
    /** 成功 */
    OK("OK", "ok"),
    /** 参数缺失，类型或格式错误 */
    ILLEGAL_ARGUMENT("ILLEGAL_ARGUMENT", "参数缺失，类型或格式错误"),
    /** 业务错误 */
    BUSINESS_ERROR("BUSINESS_ERROR", "业务错误"),
    /** 系统错误 */
    SYSTEM_ERROR("SYSTEM_ERROR", "不可预知的错误"),
    /** %s不能为空 */
    PARAM_CAN_NOT_BE_EMPTY("PARAM_CAN_NOT_BE_EMPTY", "%s不能为空"),
    /** 当前操作不可用 */
    CURRENT_OPERATE_NOT_AVAIL("CURRENT_OPERATE_NOT_AVAIL", "当前操作不可用"),
    /** 账户注册失败 */
    ACCOUNT_REGISTER_FAILURE("ACCOUNT_REGISTER_FAILURE", "账户注册失败 "),
    /** 账户未认证 */
    ACCOUNT_NOT_CERTIFICATE("ACCOUNT_NOT_CERTIFICATE", "账户未认证"),
    /** 证件号错误 */
    CREDENTIAL_NO_ERROR("CREDENTIAL_NO_ERROR", "证件号错误"),
    /** 账户未登陆 */
    ACCOUNT_NOT_LOGIN("ACCOUNT_NOT_LOGIN", "账户未登陆"),
    /** 非法访问 */
    NOT_NORMAL_ACCESS("NOT_NORMAL_ACCESS", "非法访问"),
    /** 登陆密码错误 */
    LOGIN_PWD_ERROR("LOGIN_PWD_ERROR", "登陆密码错误"),
    /** 账户不存在 */
    ACCOUNT_NOT_EXIST("ACCOUNT_NOT_EXIST", "账户不存在"),
    /** 账户已存在 */
    ACCOUNT_IS_EXISTED("ACCOUNT_HAS_EXISTED", "账户已存在"),
    /** %s格式错误，格式应为：%s */
    FORMAT_ERROR("FORMAT_ERROR", "%s格式错误，格式应为：%s"),
    /** %s中的输入值:%s类型错误，应为：数字 */
    NUMERIC_TYPE_ERROR("NUMERIC_TYPE_ERROR", "%s中的输入值:%s类型错误，应为：数字"),
    /** %s中不能包含特殊字符 */
    CAN_NOT_CONTAIN_SPECIAL_CHARACTERS("CAN_NOT_CONTAIN_SPECIAL_CHARACTERS", "%s中不能包含特殊字符"),
    /** %s中不能包含特殊字符 */
    CAN_NOT_CONTAIN_CHINESE("CAN_NOT_CONTAIN_CHINESE", "%s中不能包含特殊字符"),
    /** %s长度不能大于%s */
    LENGTH_CAN_NOT_MORE_THAN("LENGTH_CAN_NOT_MORE_THAN", "%s长度不能大于%s"),
    /** %s长度不能小于%s */
    LENGTH_CAN_NOT_LESS_THAN("LENGTH_CAN_NOT_LESS_THAN", "%s长度不能小于%s"),
    /** 手机号重复 */
    MOBILE_REPEAT("MOBILE_REPEAT", "手机号重复"),
    /** 手机号与预留手机号不一致 */
    MOBILE_ERROR("MOBILE_ERROR", "手机号与预留手机号不一致"),
    /** %s输入值:%s在平台中未定义 */
    VALUE_IS_NOT_DEFINE("VALUE_IS_NOT_DEFINE", "%s输入值:%s在平台中未定义"),
    /** %s与%s不能相同 */
    VALUE_CAN_NOT_BE_EQUAL("VALUE_CAN_NOT_BE_EQUAL", "%s与%s不能相同"),
    /** 验证码已过期 */
    VERIFY_CODE_EXPIRED("VERIFY_CODE_EXPIRED", "验证码已过期"),
    /** 短信发送失败 */
    SMS_SEND_FAILURE("SMS_SEND_FAILURE", "短信发送失败"),
    /** 业务类型错误 */
    BIZ_TYPE_ERROR("BIZ_TYPE_ERROR", "业务类型错误"),
    /** 用户名重复 */
    USERNAME_REPEAT("USERNAME_REPEAT", "用户名重复"),
    /** token错误 */
    TOKEN_ERROR("TOKEN_ERROR", "token错误");

    private String code;// 错误码
    private String referCode;// 错误信息参照码

    private ResponseCode(String code, String referCode) {
        this.code = code;
        this.referCode = referCode;
    }

    public static ResponseCode get(String code) {
        return ResponseCode.valueOf(code);
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getReferCode() {
        return referCode;
    }

    public void setReferCode(String referCode) {
        this.referCode = referCode;
    }

    /**
     * 获取错误说明信息
     * @param args
     * @return
     */
    public String getMessage(Object... args) {
        return String.format(this.referCode, args);
    }
}
